package com.xxx.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 限流器注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimiterAnno {
	
	public enum TYPE {
		IP,
		USER,
		ALL
	}
	
	String apiKey() default ""; 	// 需要限流的api key
	
	TYPE type() default TYPE.IP; 	// 限流策略类型（默认按IP限流）
	
	int permits() default 5;  		// 单位时间内的限流阈值（默认每秒5次）
	
	TimeUnit timeUnit() default TimeUnit.SECONDS;  // 时间单位
}
